The transmission of data through a noisy channel could introduce errors into the data stream. In order to reduce the amount of errors in the data sequence reconstructed after transmission through the channel, coding techniques have been developed that provide the ability to correct such errors. This is achieved usually through the addition of redundant information as part of the transmission. Here the term transmission is used broadly to include transfer of data through different types of medium. This can include communication mediums such as those used in wired, wireless, satellite, and other technologies. This can also include storage mediums such as magnetic, semiconductor, and other types of memory.
Forward error correction (FEC) allows data to be transmitted through such noisy channels by correcting providing error correction capability. Generally speaking, FEC involves encoding the source data into encoded data at the transmitter. The transmitter sends the encoded data through the noisy channel which introduces errors. At the receiver, the data received from the channel is decoded to remove errors to the extent the FEC is capable, producing a reconstructed version of the original source signal. The type of FEC coding used can greatly affect the error correction performance of the system.
Some of the most popular and powerful FEC coding techniques known today include irregular-repeat-accumulate (RA) codes and low density parity check codes (LDPC). As is known in the art, IRA codes are characterized by the encoding steps of repeating the source data, performing an interleaving or re-ordering function, and performing an accumulation function. Also, as is known in the art, LDPC codes are characterized by a parity check matrix, often referred to as an H-matrix, which defines the encoding performed on the source signal.
IRA codes and LDPC codes have their individual advantages. Up to now, an implementation of an FEC communication system needing to utilize the power of either IRA or LDPC codes has had to make a decision to either build the entire system around either an IRA code or an LDPC code. Such rigidity means that the specification of an FEC code design would dictate the type of code used, instead of allowing the system designer to choose the optimal types of encoding and decoding structures in either the IRA or LDPC format, based on attributes that are most important to the system. There may be scenarios in which the choice of the code as either IRA or LDPC can vary depending on particular needs or limitations of a system. Thus, there is a significant need for techniques that allow system designers to make flexible choices between IRA codes and LDPC codes.